package com.luoshizhen.lease.web.app.controller.payment;


import com.luoshizhen.lease.common.result.Result;
import com.luoshizhen.lease.model.entity.PaymentType;
import com.luoshizhen.lease.web.app.service.PaymentTypeService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@Tag(name = "支付方式接口")
@RestController
@RequestMapping("/app/payment")
public class PaymentTypeController {

    @Autowired
    private PaymentTypeService service;

    /**
     * 根据房间ID获取可选支付方式列表
     *
     * 此方法通过房间ID查询并返回该房间支持的所有支付方式列表
     * 主要用于前端展示特定房间的可用支付选项
     *
     * @param id 房间ID，用于查询特定房间的支付方式列表
     * @return 返回一个Result对象，其中包含支付方式列表如果列表为空，表示没有可用的支付方式
     */
    @Operation(summary = "根据房间id获取可选支付方式列表")
    @GetMapping("listByRoomId")
    public Result<List<PaymentType>> list(@RequestParam Long id) {
        List<PaymentType> list = service.listByRoomId(id);
        return Result.ok(list);
    }

    /**
     * 获取全部支付方式列表
     *
     * 通过发送GET请求到/list来调用此方法，它将返回一个包含所有支付类型的列表
     * 此方法不需要任何参数
     *
     * @return 包含支付类型列表的Result对象如果列表为空，将返回一个空列表
     */
    @Operation(summary = "获取全部支付方式列表")
    @GetMapping("list")
    public Result<List<PaymentType>> list() {
        List<PaymentType> list = service.list();
        return Result.ok(list);
    }
}
